package com.lx.javasunmmrize.SingletonDemo;

/**
 * @Description 饿汉式（静态代码块）
 *
 * 优点：简单，在类加载的时候完成实例化，避免线程同步问题
 * 缺点：不能实现懒加载，如果一直没有使用这个类，但可能造成内存的浪费
 *
 * @Author lx
 * @Date 2021/2/23 22:05
 **/
public class Singleton02 {

    public static void main(String[] args) {
        Singleton2 instanc = Singleton2.getInstanc();
        Singleton2 instanc2 = Singleton2.getInstanc();
        System.out.println(instanc == instanc2);
        System.out.println(instanc.hashCode());
        System.out.println(instanc2.hashCode());
    }
}

class Singleton2 {

    //1.将构造器私有化
    private Singleton2() {
    }



    //2.本类内部创建实例对象
    private static Singleton2 instanc;


    //在静态代码块中创建对象实例
    static {
        instanc = new Singleton2();
    }

    //3.对外提供一个公有的静态方法,返回对象实例
    public static Singleton2 getInstanc() {
        return instanc;
    }
}